/*************************************
 * 通用的审批操作的方法  
 *************************************/
function common_approve(obj){
	var isVerify=$("input[qucln=IS_VERIFY]").val();
	if(isVerify == null || isVerify=='null' || isVerify=='' ||isVerify== 0){
		$.messager.alert("审批提示","亲，请先提交单据","info");
		return;
	}
	//获取is_verify的值
	var prefix = $(obj).attr('pre');
	var dsId =$(obj).attr("dsid");
	var sflag=$(obj).attr("sflag");  //用于标识是单录单，主明细，还是一对多
	var pkStr=""; //主键和主键值的拼接  (如,详情页面：XT_ID-20CB4AC79965BD9F68BB6FFDC77241C1,添加页面：XT_ID)
	var values="0"
	var changes=0;
	//1.单录单
	if(sflag=="s"){
		pkStr = parsePKStr(prefix+"_A_AFORM");
		values=getFormJsons(prefix+"_A_AFORM");//将form中的值转换为键值对
	}
	//2.主明细
	else if(sflag=="m"){
		pkStr = parsePKStr(prefix+"_addWinForm");
		values=getFormJsons(prefix+"_addWinForm");//将form中的值转换为键值对
		//注意后期维护的时候要关闭正在编辑的行，否则
		changes=$('#'+prefix+"_addItemDatagrid").datagrid('getChanges');
		dsId=dsId.split(";")[0];
	}
	//3.一对多
	else if(sflag=="o"){
		pkStr = parsePKStr(prefix+"_maddPEForm");
		values=getFormJsons(prefix+"_maddPEForm");//将form中的值转换为键值对
		dsId=dsId.split(";")[0];
	}else{
		$.messager.alert("审批操作提示","审批按钮的sflag没有配置或者配置的不正确");
	}
	var pkName=pkStr.split("-")[0];  //主键名称
	var pkVal=pkStr.split("-")[1];   //主键值
	//1.先判断单据有没有保存(首先判断单据有没主键，然会在判断单据与没有进行数据的修改)
	if(pkVal==null||pkVal==""||pkVal=='undefined'){
		$.messager.alert("提示","亲，单据尚未保存，不能进行审批操作！");
		return;
	}else{
		if(values=="0"&&changes<=0){//如果数据没有发生改变
			//2.判断单据有没有作废
				approve(pkStr,$(obj).attr("dsid"),dsId,prefix,'','',sflag);
		}else{
			$.messager.alert("审批提示","亲，数据已经发生改变请先进行保存之后再审批","warn");
		}
	}
}

function objToUrlParams(obj){
	var urlS = '';
	for (i in obj){
		urlS += i + '=' + obj[i] + '&';
	}
	return urlS;
}



//打开单子要审批的的列表界面
function approve(pkStr,verifyDsId,dsId,prefix,djType,djCode,sflag){
	var pkVal=pkStr.split("-")[1];
	if($('#'+prefix+'_VER_WIN').length>0){
   		var obj = document.getElementById(prefix+"_VER_WIN");
   		$("#"+"approveDiv").remove();
   		document.body.removeChild(obj);
   	}
	var div_box = document.createElement("DIV");  //先创建一个div
	div_box.id = prefix+"_VER_WIN";  //设置每个审批页面div的id
	document.body.appendChild(div_box);    //将该div追加到body的尾部
	var oldApReturnObj={};
	oldApReturnObj["djId"]=pkVal;
	oldApReturnObj["djType"]=djType;
	oldApReturnObj["djCode"]=djCode;
	oldApReturnObj["dsId"]=dsId;
	oldApReturnObj["prefix"]=prefix;
	oldApReturnObj["sflag"]=sflag;
	oldApReturnObj["verifyDsId"]=verifyDsId;
	$('#'+prefix+'_VER_WIN').load(_m_url+"approve/approveDJ",objToUrlParams(oldApReturnObj),
		function(){
			$.parser.parse('#apprivePanel');   //解析该div容器中所有的内容
			var pleft = (window.parent.innerWidth-800)/2;
			var height = window.parent.innerHeight-120;
			$('#approveDiv').window({   
				width:725,
				height:height,
				left:185,
				top:0,
				title:"审批",
				modal:true,
				resizable:true,
				closable:true,
				maximizable:false,
				minimizable:false,
			});
			//1.打开审批数据
			$('#approveDiv').window('open');
			//2.加载该页面的下拉框的对照数据,并选中
			fillApproveResult("approveDiv");
			//3.根据当前登录人，和当前单据的审批级别控制审批的样式
			$.ajax({
				type:"post",
				url:_m_url+"approve/loadApproveStyle",
				data:{"djId":pkVal,"dsId":dsId},
				async:false,
				success:function(data){
					//1.把整张单子锁定
					readApproveForm("approveDiv");
					
					//2.获取要审批的等级和当前登录人,并且判断该等级是否已经审批通过是否具备审批权限
					var approveGrade=data.approveGrade
					var isApproveRight=data.isApproveRight;
					var isApprovePass=data.isApprovePass;
					var checkApprovePass=data.checkApprovePass;
					
					var approveTable=$('#approveDiv').find("table[approveLevel='"+approveGrade+"']");
					
					//得到单据的审批标志位
					var isVerify=$("input[qucln=IS_VERIFY]").val();
					if(isVerify == 1){
						//移除确认审批的事件
						$("#approveDiv a[id=sureApprove]").removeAttr("onclick");
						$("#approveDiv a[id=sureApprove]").unbind("click");
						$("#approveDiv a[id=sureApprove]").bind("click",function(){
							closeApprovePanel(this);
						});
						//如果具备审批权限，并且本单据允许驳回，那么驳回按钮显示
						var isReject=data.isReject;
						if(isApproveRight==1&&isReject==1){
							$("a[id='rejectApprove']").css("display","block");
						}
					}else{
						//打开该级别的审批（具备该等级的审批级别并且该等级没有审批通过）
						if(isApproveRight==1&&checkApprovePass==false){
							openApproveForm(approveTable,approveGrade);
						}else{
							//不具备审批级别的权限，那么确认审批按钮的事件移除
							$("#approveDiv a[id=sureApprove]").removeAttr("onclick");
							$("#approveDiv a[id=sureApprove]").unbind("click");
							$("#approveDiv a[id=sureApprove]").bind("click",function(){
								closeApprovePanel(this);
							});
						}
					}
				},error:function() { 
					$.messager.alert("提示信息","审批时出现异常","");
				}
			});
	});
}
	

//灰化整张单子
function readApproveForm(formId){
	var input=$("#"+formId).find("input");
	var select=$("#"+formId).find("select");
	var textarea=$("#"+formId).find("textarea");
	$(input).map(function(){
		$(this).parent("td").attr("bgcolor","#eeeeee");
		$(this).addClass("read_color");
		$(this).attr("readonly","readonly");
	});
	$(select).map(function(){
		$(this).parent("td").attr("bgcolor","#eeeeee");
		$(this).addClass("read_color");
		$(this).attr("disabled","disabled");
	});
	$(textarea).map(function(){
		$(this).parent("td").attr("bgcolor","#eeeeee");
		$(this).addClass("read_color");
		$(this).attr("readonly","readonly");
	});
}



//打开某个table单子
function openApproveForm(formId,approveGrade){
	var input=$(formId).find("input[auto!=true]");
	var select=$(formId).find("select[auto!=true]");
	var textarea=$(formId).find("textarea[auto!=true]");
	$(input).map(function(){
		$(this).parent("td").removeAttr("bgcolor")
		$(this).removeClass("read_color");
		$(this).removeAttr("readonly");
	});
	$(select).map(function(){
		$(this).parent("td").removeAttr("bgcolor")
		$(this).removeClass("read_color");
		$(this).removeAttr("disabled");
	});
	$(textarea).map(function(){
		$(this).parent("td").removeAttr("bgcolor")
		$(this).removeClass("read_color");
		$(this).removeAttr("readonly");
	});
	$(formId).attr("iscurrentgrade","T");
	$(formId).parents("#approveDiv").find("#sureApprove").attr("currentGrade",approveGrade);
}


//填充审批结果的对照信息
function fillApproveResult(divName){
	//1.填充下拉框中的值
	$.ajax({
		url:_m_url+'dz/queryDzList',
		type:'post',
		async:false,
		data:{dzIds:serializeEDIType(divName)},
		success:function(data){
			//填充下拉框
			fillApproveSel(divName,data);
		}
	});
	//3.选中值
	var select=$("#"+divName).find("select");
	$(select).map(function(){
		var editype=$(this).attr("editype");
		var selVal=$(this).attr("selVal");
		if(editype!=null&&editype!=""&&editype!=undefined&&selVal!=null&&selVal!=""&&selVal!=undefined){
			$(this).val(selVal);
		}
	});
	var input=$("#"+divName).find("input");
	$(input).map(function(){
		var editype=$(this).attr("editype");
		var val=$(this).val();
		if(editype!=null&&editype!=""&&editype!=undefined&&val!=null&&val!=""&&val!=undefined){
			   var format=editype+"fmat";
			   var showVal=eval('window.parent.'+format).call(this,val);
			   $(this).val(showVal);
		}
	});
}

function fillApproveSel(formId,data){
	var tc = 0;
	$("#"+formId+" select").each(function(){
		if(typeof($(this).attr('editype')) != 'undefined'){
			$(this).html(formatOptions(data[tc++]));
		}
	});
}

//审批界面的关闭
function closeApprovePanel(obj){
	var prefix=$(obj).attr("prefix");
	$('#approveDiv').window('close');
}



//确定审批
function sureApprove(obj){
	//确认审批之后关闭
	var appReturnObj=new Array();
	//找到当前审批级别的table  
	var currAppTab=$(obj).parents("#approveDiv").find("table[iscurrentgrade=T]")[0];
	var dsId=$(obj).attr("dsid");
	var verifyDsId=$(obj).attr("verifyDsId");
	var prefix=$(obj).attr("pre"); 
	var sflag=$(obj).attr("sflag");  //判断是一对多还是主明细
	//获取主键名
	var pkName= eval("window.parent."+dsId+"_pk");  //获得明细表的主键
	//判断审批结果有没有选择值，那么就不能进行审批
	var approveObj={};
	approveObj["approveLevel"]=$(currAppTab).attr("approveLevel");   //审批的等级
	approveObj["djId"]=$(obj).attr("djId");  //审批的单据的id
	approveObj["isExamine"]=$($(currAppTab).find("#isExamine")[0]).val();   //审批的结果
	approveObj["examineContent"]=$($(currAppTab).find("#examineContent")[0]).val();   //审批的内容
	var approveResult=approveObj["isExamine"];   //审批的结果
	if(approveResult=='S004'){
		$.messager.alert("审批提示","亲，您不能选择一审被驳回");
		return;
	}
	//保存审批的数据
	appReturnObj={"approveObj":approveObj,"dsId":dsId,"pkName":pkName,"djId":$(obj).attr("djId")};
	$.ajax({
		url:_m_url+'approve/sureSaveApprove',
		type:'post',
		contentType:"application/json;charset=utf-8",
		data:JSON.stringify(appReturnObj),
		async:false,
		success:function(data){
			if(data.msg =='success'){
				if(data.checkResult=='success'){    //确认审批验证数据的准确性通过
					closeApprovePanel(obj);
					//保存成功刷新单据（多个人同时打开单子的时候会发生覆盖）
					//获取审批按钮,执行单据的审批操作
					var approveBut=$("#"+prefix+"_APPROVE_BUT");
					var butnCode=$(approveBut).attr("id");
					$(approveBut).attr("code",butnCode);
					var is_verify=data.djIsVerify;
					if(is_verify==1){      //最后一级审批通过的时候调用审核的存储过程，直接把is_verify的数据更新成1
						$(approveBut).after("<input type='hidden' dsId='"+$(approveBut).attr("dsid")+"' level='"+approveObj["approveLevel"]+"' id='approveObj'  content='"+approveObj["examineContent"]+"'   isExamine='"+approveObj["isExamine"]+"' djId='"+approveObj["djId"]+"'  />");
						common_desOrApply(approveBut,1);
					}else{
						//刷新审批后的数据
						var sflag=$(approveBut).attr("sflag");
						if(sflag=='s'){
							var pkStr = parsePKStr(prefix+"_A_AFORM");
							endAppLoadDataS(dsId,prefix,pkStr);
						}else if(sflag=='m'){
							var pkStr = parsePKStr(prefix+"_addWinForm");
							dsId=$(approveBut).attr("dsid");
							endAppLoadDataM(dsId,prefix,pkStr);
						}
					}
				}else{
					$.messager.alert("审批结果",'审批失败原因：'+data.checkResult);
				}
			}else{
				$.messager.alert("审批结果",'审批失败原因:'+data.msg);
			}
		}
	});
}


//最高等级的审批人在审批通过的情况下，操作确认驳回的按钮
function sureReject(obj){
	var appReturnObj=new Array();
	$.messager.confirm("提示","单据已经审批通过，确认驳回吗？",function(r){
		if(!r){
			return;
		}else{
			//确认驳回的时候
			//获取单据的最后一级的审批登记
			var lastLevel=$("#approveMain table[class='tableBord']:last").attr("approvelevel");
			var dsId=$(obj).attr("dsid");
			var prefix=$(obj).attr("pre"); 
			var approveObj={};
			approveObj["approveLevel"]=lastLevel;   //审批的等级(最后一级)
			approveObj["djId"]=$(obj).attr("djId");  //审批的单据的id
			approveObj["dsId"]=$(obj).attr("dsId");  //审批的单据的id
			approveObj["isExamine"]='S002';   //审批的结果(审批不通过)
			approveObj["examineContent"]='';   //审批的内容
			//获取主键名
			var pkName= eval("window.parent."+dsId+"_pk");  //获得明细表的主键
			appReturnObj={"approveObj":approveObj,"dsId":dsId,"pkName":pkName,"djId":$(obj).attr("djId"),"butnCode":"rejectApprove"};
			//如果确认驳回，那么调用审批通过的单据驳回的回调函数，
			//如果单据可以驳回，那么调用最后一级审批不通过的方法
			$.ajax({
				type:'post',
				url:_m_url+'approve/sureReject',
				contentType:"application/json;charset=utf-8",
				data:JSON.stringify(appReturnObj),
				async:false,
				success:function(data){
					if(data.isResult=='success'){
						closeApprovePanel(obj);
						var approveBut=$("#"+prefix+"_APPROVE_BUT");
						//刷新审批后的数据
						var sflag=$(approveBut).attr("sflag");
						if(sflag=='s'){
							var pkStr = parsePKStr(prefix+"_A_AFORM");
							endAppLoadDataS(dsId,prefix,pkStr);
						}else if(sflag=='m'){
							var pkStr = parsePKStr(prefix+"_addWinForm");
							dsId=$(approveBut).attr("dsid");
							endAppLoadDataM(dsId,prefix,pkStr);
						}
					}else{
						closeApprovePanel(obj);
						$.messager.alert("审批结果",data.msg);
					}
				}
			});
		}
	});
}
      

